package com.tiancheng.trade.commom.web.model.request.merchant;

import com.tiancheng.trade.commom.web.model.request.merchant.BaseMerchantRegVO;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @Author: kellen
 * @Description: 商户注册请求
 * @Date: create in 2024/12/2 20:19
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RegisterMerchantReqNewVO extends BaseMerchantRegVO implements Serializable {
    /**
     * 授权应用id
     */
    private String clientId;
    /**
     * 机构支付通道id
     */
    //@NotNull(message = "机构支付通道id")
    private Long orgPaymentChannelId;


    /**
     * 商户类型：1-企业商户、2-个体商户、3-小微商户
     * @see com.tiancheng.trade.merchant.enums.MerchantTypeEnums
     */
    @NotNull(message = "商户类型不能为空")
    private Integer merchantType;
    /**
     * 商户名称
     */
    @NotBlank(message = "商户名称不能为空")
    private String merchantName;
    /**
     * 社会信用统一代码:小微商户传法人身份证号
     */
    @NotBlank(message = "社会信用代码不能为空（小微商户传法人身份证）")
    private String shopLic;

    /**
     * 营业省份id
     */
    @NotBlank(message = "营业省份id不能为空")
    private String shopProvinceId;
    /**
     * 营业市id
     */
    @NotBlank(message = "营业市id不能为空")
    private String shopCityId;
    /**
     * 营业区id
     */
    @NotBlank(message = "营业区id不能为空")
    private String shopCountryId;
    /**
     * 营业地址
     */
    @NotBlank(message = "营业地址不能为空")
    private String shopAddress;
    /**
     * 营业执照有效期-开始
     */
    private String shopLicenseBeginDate;
    /**
     * 营业执照有效期-结束
     */
    private String shopLicenseEndDate;

    /**
     * 法人身份证姓名
     */
    @NotBlank(message = "法人姓名不能为空")
    private String legalName;
    /**
     * 法人身份证号
     */
    @NotBlank(message = "法人身份证不能为空")
    private String legalIdcardNo;
    /**
     * 法人性别
     * 1-男性
     * 2-女性
     */
    @NotNull(message = "法人性别不能为空")
    private Integer  legalSex;
    /**
     * 法人手机号
     */
    @NotBlank(message = "联系电话不能为空")
    private String legalMobile;
    /**
     * 法人证件开始日期:yyyy-MM-dd
     */
    @NotBlank(message = "法人证件开始日期不能为空")
    private String legalCardBeginDate;
    /**
     * 法人证件截止日期:yyyy-MM-dd
     */
    @NotBlank(message = "法人证件结束日期不能为空")
    private String legalCardDeadline;
    /**
     * 法人住址
     */
    private String legalAddress;
    /**
     * 法人职业
     * 0-各类专业、技术人员
     * 1-国家机关、党群组织、企事业单位的负责人
     * 2-办事人员和有关人员
     * 3-商业工作人员
     * 4-服务性工作人员
     * 5-农林牧渔劳动者
     * 6-生产工作、运输工作和部分体力劳动者
     * 7-不便分类的其他劳动者
     */
    private Integer legalOccupation;


    // ------------------------------------------------ 第二步 添加管理员信息
    /**
     * 经营项目简述（营业类目描述）
     */
    @NotBlank(message = "经营项目简述不能为空")
    private String shopBusiness;

    // ------------------------------------------------ 第三步 添加结算信息
    /**
     * 开户行行号
     */
    @NotBlank(message = "开户行行号不能为空")
    private String bankNo;
    /**
     * 账户类型:0:个人账户  1:公司账户
     */
    @NotBlank(message = "账户类型不能为空")
    private String bankAcctType;
    /**
     * 开户行帐号
     */
    @NotBlank(message = "开户行行号不能为空")
    private String bankAcctNo;
    /**
     * 开户行名称
     */
    @NotBlank(message = "开户行名称不能为空")
    private String bankAcctName;
    /**
     * 银行预留手机号
     */
    @NotBlank(message = "银行预留手机号不能为空")
    private String bankAcctPhone;

    /**
     * 行业类别编码
     */
    private String mccCode;

    // ------------------------------------------结算信息------------------------------------------
    /**
     * 平台分佣百分比值
     */
    @NotNull(message = "抽佣金额不能为空")
    private BigDecimal platformPercent;
    /**
     * 清分周期类型：T=按日（如T+1），M=按月固定日（如每月10日）
     **/
    @NotNull(message = "清分周期类型不能为空")
    private String cycleType;
    /**
     * 清分周期值，cycle_type为T，cycle_value为1时代表T+1清分
     */
    @NotNull(message = "清分周期值不能为空")
    private Integer cycleValue;
    /**
     * 备注
     */
    private String clearRemark;
    /**
     * 通知地址
     */
    private String notifyUrl;
    /**
     * 证件文件集合
     */
    private List<String> fileIds;
    /**
     * 交易中台商户进件id
     */
    private Long tradeMerchantPayRegId;

    /**
     * 进件模式：0-人工进件，1-自助进件
     */
    private Integer regMode;
}
